/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistence;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import util.ConnectionFactory;

/**
 *
 * @author Jandrei
 */
public class DAOGenerico<E> implements DAO<E> {

    private EntityManager em;

    public DAOGenerico() {
        em = ConnectionFactory.getInstance().getEntityMananger();
    }
    
    @Override
    public E gravar(E objeto) {
        em.getTransaction().begin();
        em.persist(objeto);
        em.getTransaction().commit();

        return objeto;
    }

    @Override
    public E atualizar(E objeto) {
        em.getTransaction().begin();
        em.merge(objeto);
        em.getTransaction().commit();

        return objeto;
    }

    @Override
    public void remover(E objeto) {
        em.getTransaction().begin();
        em.remove(objeto);
        em.getTransaction().commit();
    }

    

    @Override
    public List<E> buscaTodos(Class objeto) {
        Query q = em.createQuery("SELECT e FROM " + objeto.getSimpleName() + " e");
		return q.getResultList();
    }
    
    
    
}
